#include <stdio.h>
#include <stdlib.h>

void swap(int *, int *);
void bubble(int *, int, int (*pf)(const void*, const void*));
int isGreater(const void*, const void*);
int judge(int [], int, int *);

int main(void)
{
    int *a;
    int n, i, cd;

    scanf("%d", &n);
    a = (int*)malloc(n * sizeof(int));

    for (i = 0; i < n; i ++)
    {
        scanf("%d", &a[i]);
    }
    if (!judge(a, n, &cd))
    {
        printf("YES(%d)\n", cd);
    }
    else
    {
        printf("NO\n");
    }
    free(a);

    return 0;
}

int isGreater(const void *a, const void *b)
{
    return *(int*)a - *(int*)b;
}

int judge(int data[], int n, int *cd)
{
    int i;

    if (n < 3)
    {
        return -1;
    }

    /* qsort(data, n, sizeof(int), isGreater);*/
    bubble(data, n, isGreater);

    for (i = 1; i < n - 1; i ++)
    {
        if ((data[i+1] - data[i]) != (data[i] - data[i - 1]))
        {
            break;
        }
    }

    if (i < n - 1)
    {
        return 1;
    }

    *cd = data[1] - data[0];

    return 0;
}

void swap(int *a, int *b)
{
    int temp;

    temp = *a;
    *a = *b;
    *b = temp;
}

void bubble(int *arr, int n, int (*pf)(const void*, const void*))
{

    int i, j;

    for (i = 0; i < n - 1; i ++)
    {
        for (j = 0; j < n - i - 1; j ++)
        {
            if (arr[j] > arr[j+1])
            {
                swap(&arr[j], &arr[j+1]);
            }
        }
    }
}


